#ifndef FACE_FEATURE_ARCFACE_GPU_API_H
#define FACE_FEATURE_ARCFACE_GPU_API_H
#include <opencv2/opencv.hpp>
#include <iostream>
#include <memory>

namespace arcfacefeaturegpu
{


class ArcfaceFeatureGpuApi
{
    public:

      ArcfaceFeatureGpuApi(const int gpu_id, const std::string &onnx_path, const std::string &trt_dir, const int max_batch = 1);
      
      ~ ArcfaceFeatureGpuApi();

    public:

      void Execute(const cv::Mat &img, std::vector<float> &feature);

      void Execute(const cv::Mat &img, std::vector<float> &feature, float &l2);

      std::vector<std::vector<float>> Execute(const std::vector<cv::Mat> &imgs);


    private:
      
      ArcfaceFeatureGpuApi();

      class Impl;

      std::unique_ptr <Impl> impl_;
};



};//namespace arcfacefeaturegpu









#endif